# 函数
# 实现特定功能的一块代码
# 也是一种抽象

# 定义一个函数
# 计算1~n的和
def sumN(n):
    # 代码体
    i = 1
    sum = 0
    while i <= n:
        sum += i
        i += 1
    # 返回值
    return sum


# 调用函数
sum_1_to_10 = sumN(10)
sum_1_to_100 = sumN(100)
print(sum_1_to_10)
print(sum_1_to_100)


# 递归函数
# 1、自己调用自己
# 2、停止条件

# 计算n的阶乘
# n! = n * (n-1)! * (n-2) ! *......* 1

# 循环实现 (推荐)
def jieCheng(n):
    result = 1
    while n >= 1:
        result *= n
        n -= 1
    print(result)


jieCheng(4)


# 递归的方式
def jieChengR(n):
    # 停止条件
    if n == 1:
        return 1
    # 自己调用自己
    return n * jieChengR(n - 1)


print(jieChengR(5))
'''
jieChengR(5) 
        -> 5 * jieChengR(4)
                    -> 4 * jieChengR(3)
                                -> 3 * jieChengR(2)
                                            2 * jieChengR(1)
                                                    -> 1
'''
# print(jieChengR(1000))

# lambda 表达式
# 计算圆的面积
r1 = 5.78
r2 = 22.86
r3 = 56.78
area_r1 = 3.14 * r1 * r1
area_r2 = 3.14 * r2 * r2
area_r3 = 3.14 * r3 * r3
# Python中的常量名都为大写，没有任何修饰符，完全靠自觉
PI = 3.1415926535


def areaR(r):
    return PI * r * r


# 简化
l1 = lambda r: PI * r * r

print(areaR(r1))
print(areaR(r2))
print(areaR(r3))
print(l1(r1))
print(l1(r2))
print(l1(r3))

list_tuple = [(1, 7), (3, 5), (2, 6), (4, 8)]

list_tuple.sort(key=lambda x: x[1], reverse=True)
print(list_tuple)
